<!-- HTML header for doxygen 1.11.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: Automatic link generation</title>
<link rel="icon" href="doxygen.ico" type="image/x-icon" />
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen_manual.css" rel="stylesheet" type="text/css"/>
<link href="extra.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><a href="../index.html"><img alt="Logo" src="doxygen_logo.svg" height="35px"/></a></td>
  <td class="menu-item"><a href="index.html">Docs</a></td>
  <td class="menu-item"><a href="changelog.html">Changelog</a></td>
  <td class="menu-item"><a href="../helpers.html">Extensions</a></td>
  <td class="menu-item"><a href="../examples.html">Examples</a></td>
  <td class="menu-spacer">&#160;</td>
  <td class="menu-item" id="download">
      <img class="download-icon" src="../assets/download.svg" width="16px" height="16px" alt="Download doxygen"/>
      <a href="../download.html">Download</a>
  </td>
  <td class="menu-item" id="donate">
     <form action="https://www.paypal.com/cgi-bin/webscr" method="post" class="nav-item d-inline-flex px-1 mx-1">
       <input type="hidden" name="cmd" value="_donations" />
       <input type="hidden" value="doxygen@gmail.com" name="business" />
       <input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted" />
       <input type="hidden" name="lc" value="US" />
       <input type="hidden" name="tax" value="0" />
       <input type="hidden" name="item_name" value="Doxygen donation" />
       <input type="hidden" name="no_shipping" value="1" />
       <table class="donate">
         <tr>
           <td class="donate-button"><input type="image" width="74" height="21"
               src="https://www.paypal.com/en_GB/i/btn/btn_donate_SM.gif" border="0" name="submit"
               alt="Donate to Doxygen with PayPal!" /></td>
         </tr>
         <tr>
           <td class="currency"><select size="1" name="currency_code">
               <option selected="selected" value="EUR">&euro; (EUR)</option>
               <option value="USD">$ (USD)</option>
             </select></td>
         </tr>
       </table>
     </form>
   </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
     <div id="nav-tree-ads-carbon">
       <script async type="text/javascript" src="https://cdn.carbonads.com/carbon.js?serve=CK7DTK3M&placement=stacknl" id="_carbonads_js"></script>
     </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('autolink.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<div><div class="header">
  <div class="headertitle"><div class="title">Automatic link generation</div></div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="autolink.html#linkurl">Links to web pages and mail addresses</a></li>
<li class="level1"><a href="autolink.html#linkclass">Links to classes</a></li>
<li class="level1"><a href="autolink.html#linkfile">Links to files</a></li>
<li class="level1"><a href="autolink.html#linkfunc">Links to functions</a></li>
<li class="level1"><a href="autolink.html#linkother">Links to other members</a></li>
<li class="level1"><a href="autolink.html#resolving">typedefs</a></li>
</ul>
</div>
<div class="textblock"><p>Most documentation systems have special &lsquo;see also&rsquo; sections where links to other pieces of documentation can be inserted. Although doxygen also has a command to start such a section (See section <a class="el" href="commands.html#cmdsa">\sa</a>), it does allow you to put these kind of links anywhere in the documentation. For <img class="formulaInl" alt="{\LaTeX}" src="form_0.png" width="34" height="13"/> documentation a reference to the page number is written instead of a link. Furthermore, the index at the end of the document can be used to quickly find the documentation of a member, class, namespace or file. For man pages no reference information is generated.</p>
<p>The next sections show how to generate links to the various documented entities in a source file.</p>
<h1><a class="anchor" id="linkurl"></a>
Links to web pages and mail addresses</h1>
<p>Doxygen will automatically replace any URLs and mail addresses found in the documentation by links (in HTML). To manually specify link text, use the HTML '<code>a</code>' tag: </p><pre class="fragment">&lt;a href="linkURL"&gt;link text&lt;/a&gt; </pre><p> which will be automatically translated to other output formats by doxygen.</p>
<h1><a class="anchor" id="linkclass"></a>
Links to classes</h1>
<p>All words in the documentation that correspond to a documented class and contain at least one non-lower case character will automatically be replaced by a link to the page containing the documentation of the class. If you want to prevent that a word that corresponds to a documented class is replaced by a link you should put a % in front of the word. To link to an all lower case symbol, use <a class="el" href="commands.html#cmdref">\ref</a>.</p>
<h1><a class="anchor" id="linkfile"></a>
Links to files</h1>
<p>All words that contain a dot (<code>.</code>) that is not the last character in the word are considered to be file names. If the word is indeed the name of a documented input file, a link will automatically be created to the documentation of that file.</p>
<h1><a class="anchor" id="linkfunc"></a>
Links to functions</h1>
<p>Links to functions are created if one of the following patterns is encountered: </p><ol>
<li>
<code>&lt;functionName&gt;"("&lt;argument-list&gt;")"</code> </li>
<li>
<code>&lt;functionName&gt;"()"</code> </li>
<li>
<code>"::"&lt;functionName&gt;</code> </li>
<li>
<code>(&lt;className&gt;"::")<sup>n</sup>&lt;functionName&gt;"("&lt;argument-list&gt;")"</code> </li>
<li>
<code>(&lt;className&gt;"::")<sup>n</sup>&lt;functionName&gt;"("&lt;argument-list&gt;")"&lt;modifiers&gt;</code> </li>
<li>
<code>(&lt;className&gt;"::")<sup>n</sup>&lt;functionName&gt;"()"</code> </li>
<li>
<code>(&lt;className&gt;"::")<sup>n</sup>&lt;functionName&gt;</code> </li>
</ol>
<p>where n&gt;0.</p>
<dl class="section user"><dt>Note 1: </dt><dd>Function arguments should be specified with correct types, i.e. 'fun(const std::string&amp;,bool)' or '()' to match any prototype. </dd></dl>
<dl class="section user"><dt>Note 2:</dt><dd>Member function modifiers (like 'const' and 'volatile') are required to identify the target, i.e. 'func(int) const' and 'func(int)' target different member functions. </dd></dl>
<dl class="section user"><dt>Note 3: </dt><dd>For Javadoc compatibility a # may be used instead of a :: in the patterns above. </dd></dl>
<dl class="section user"><dt>Note 4:</dt><dd>In the documentation of a class containing a member foo, a reference to a global variable is made using "::foo", whereas #foo will link to the member.</dd></dl>
<p>For non overloaded members the argument list may be omitted.</p>
<p>If a function is overloaded and no matching argument list is specified (i.e. pattern 2 or 6 is used), a link will be created to the documentation of one of the overloaded members.</p>
<p>For member functions the class scope (as used in patterns 4 to 7) may be omitted, if: </p><ol>
<li>
The pattern points to a documented member that belongs to the same class as the documentation block that contains the pattern. </li>
<li>
The class that corresponds to the documentation blocks that contains the pattern has a base class that contains a documented member that matches the pattern. </li>
</ol>
<h1><a class="anchor" id="linkother"></a>
Links to other members</h1>
<p>All of these entities can be linked to in the same way as described in the previous section. For sake of clarity it is advised to only use patterns 3 and 7 in this case.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><span class="comment">/*! \file autolink.cpp</span></div>
<div class="line"><span class="comment">  Testing automatic link generation.</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to a member of the Autolink_Test class: Autolink_Test::member, </span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  More specific links to the each of the overloaded members:</span></div>
<div class="line"><span class="comment">  Autolink_Test::member(int) and Autolink_Test#member(int,int)</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  A link to a protected member variable of Autolink_Test: Autolink_Test#var, </span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  A link to the global enumeration type #GlobEnum.</span></div>
<div class="line"><span class="comment"> </span></div>
<div class="line"><span class="comment">  A link to the define #ABS(x).</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to the destructor of the Autolink_Test class: Autolink_Test::~Autolink_Test, </span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to the typedef ::B.</span></div>
<div class="line"><span class="comment"> </span></div>
<div class="line"><span class="comment">  A link to the enumeration type Autolink_Test::EType</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to some enumeration values Autolink_Test::Val1 and ::GVal2</span></div>
<div class="line"><span class="comment">*/</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*!</span></div>
<div class="line"><span class="comment">  Since this documentation block belongs to the class Autolink_Test no link to </span></div>
<div class="line"><span class="comment">  Autolink_Test is generated.</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  Two ways to link to a constructor are: #Autolink_Test and Autolink_Test().</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  Links to the destructor are: #~Autolink_Test and ~Autolink_Test().</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to a member in this class: member().</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  More specific links to the each of the overloaded members: </span></div>
<div class="line"><span class="comment">  member(int) and member(int,int). </span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to the variable #var.</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  A link to the global typedef ::B.</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  A link to the global enumeration type #GlobEnum.</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to the define ABS(x).</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to a variable \link #var using another text\endlink as a link.</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  A link to the enumeration type #EType.</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  A link to some enumeration values: \link Autolink_Test::Val1 Val1 \endlink and ::GVal1.</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">  And last but not least a link to a file: autolink.cpp.</span></div>
<div class="line"><span class="comment">  </span></div>
<div class="line"><span class="comment">  \sa Inside a see also section any word is checked, so EType, </span></div>
<div class="line"><span class="comment">      Val1, GVal1, ~Autolink_Test and member will be replaced by links in HTML.</span></div>
<div class="line"><span class="comment">*/</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">class </span>Autolink_Test</div>
<div class="line">{</div>
<div class="line">  <span class="keyword">public</span>:</div>
<div class="line">    Autolink_Test();               <span class="comment">//!&lt; constructor </span></div>
<div class="line">   ~Autolink_Test();               <span class="comment">//!&lt; destructor </span></div>
<div class="line">    <span class="keywordtype">void</span> member(<span class="keywordtype">int</span>);     <span class="comment">/**&lt; A member function. Details. */</span></div>
<div class="line">    <span class="keywordtype">void</span> member(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>); <span class="comment">/**&lt; An overloaded member function. Details */</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">    /** An enum type. More details */</span></div>
<div class="line">    <span class="keyword">enum</span> EType { </div>
<div class="line">      Val1,               <span class="comment">/**&lt; enum value 1 */</span> </div>
<div class="line">      Val2                <span class="comment">/**&lt; enum value 2 */</span> </div>
<div class="line">    };                </div>
<div class="line"> </div>
<div class="line">  <span class="keyword">protected</span>:</div>
<div class="line">    <span class="keywordtype">int</span> var;              <span class="comment">/**&lt; A member variable */</span></div>
<div class="line">};</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! details. */</span></div>
<div class="line">Autolink_Test::Autolink_Test() { }</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! details. */</span></div>
<div class="line">Autolink_Test::~Autolink_Test() { }</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! A global variable. */</span></div>
<div class="line"><span class="keywordtype">int</span> globVar;</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! A global enum. */</span></div>
<div class="line"><span class="keyword">enum</span> GlobEnum { </div>
<div class="line">                GVal1,    <span class="comment">/*!&lt; global enum value 1 */</span> </div>
<div class="line">                GVal2     <span class="comment">/*!&lt; global enum value 2 */</span> </div>
<div class="line">              };</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*!</span></div>
<div class="line"><span class="comment"> *  A macro definition.</span></div>
<div class="line"><span class="comment"> */</span> </div>
<div class="line"><span class="preprocessor">#define ABS(x) (((x)&gt;0)?(x):-(x))</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">typedef</span> Autolink_Test B;</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! \fn typedef Autolink_Test B</span></div>
<div class="line"><span class="comment"> *  A type definition. </span></div>
<div class="line"><span class="comment"> */</span></div>
</div><!-- fragment -->  
  Click <a href="examples/autolink/html/class_autolink___test.html">here</a> 
  for the corresponding HTML documentation that is generated by doxygen.
   </dd></dl>
<h1><a class="anchor" id="resolving"></a>
typedefs</h1>
<p>Typedefs that involve classes, structs and unions, like </p><pre class="fragment">typedef struct StructName TypeName
</pre><p> create an alias for StructName, so links will be generated to StructName, when either StructName itself or TypeName is encountered.</p>
<dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><span class="comment">/*! \file restypedef.cpp</span></div>
<div class="line"><span class="comment"> * An example of resolving typedefs.</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! \struct CoordStruct</span></div>
<div class="line"><span class="comment"> * A coordinate pair.</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"><span class="keyword">struct </span>CoordStruct</div>
<div class="line">{<span class="comment"></span></div>
<div class="line"><span class="comment">  /*! The x coordinate */</span></div>
<div class="line">  <span class="keywordtype">float</span> x;<span class="comment"></span></div>
<div class="line"><span class="comment">  /*! The y coordinate */</span></div>
<div class="line">  <span class="keywordtype">float</span> y;</div>
<div class="line">};</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! Creates a type name for CoordStruct */</span> </div>
<div class="line"><span class="keyword">typedef</span> CoordStruct Coord;</div>
<div class="line"><span class="comment"></span> </div>
<div class="line"><span class="comment">/*! </span></div>
<div class="line"><span class="comment"> * This function returns the addition of \a c1 and \a c2, i.e:</span></div>
<div class="line"><span class="comment"> * (c1.x+c2.x,c1.y+c2.y)</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line">Coord add(Coord c1,Coord c2)</div>
<div class="line">{</div>
<div class="line">}</div>
</div><!-- fragment -->  
  Click <a href="examples/restypedef/html/restypedef_8cpp.html">here</a> 
  for the corresponding HTML documentation that is generated by doxygen.
   </dd></dl>
<p> 
Go to the <a href="output.html">next</a> section or return to the
 <a href="index.html">index</a>.
 </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
  </ul>
</div>
</body>
</html>
